package com.serviceprovider.business.module.sp.transaction.services.interfaces;

//~--- non-JDK imports --------------------------------------------------------

import com.serviceprovider.business.module.admin.transaction.valueobjects.AdminTransactionCriteria;
import com.serviceprovider.business.module.common.Page;
import com.serviceprovider.business.module.sp.transaction.model.TransactionCriteria;
import com.serviceprovider.business.module.sp.transaction.model.TransactionDetail;
import com.serviceprovider.business.module.sp.transaction.valueobjects.TransactionDetailsVO;
import com.serviceprovider.business.module.user.model.impl.User;

//~--- JDK imports ------------------------------------------------------------

import java.util.List;

public interface ITransactionService {
    List<TransactionDetailsVO> findNewTransactionsVO(int providerId);

    List<TransactionDetail> findByCriteria(TransactionCriteria criteria);

    List<TransactionDetail> findTransactionsByUserId(int userId);

    TransactionDetail getTransactionById(int id);

    List<TransactionDetail> findTransactionsByBatch(int batchId);

    List<TransactionDetail> findTransactionsByPayee(int payeeid);

    List<User> findPayeeListOnTransaction(TransactionDetail transaction);

    List<TransactionDetail> findByProviderAndBatch(int providerId, int batchId);

    TransactionDetail insertTransaction(TransactionDetail transaction);

    void deleteTransaction(int transactionId);

    void updateTransaction(TransactionDetail transaction);

    void updateTransactionStatus(int transactionId, int transactionStatusId);

    List<TransactionDetail> findNumberOfTransactionsInABatch(int batchid);

    Page<TransactionDetail> find(int pageNumber, int pageSize, String sortColumn, String sortOrder);

    List<TransactionDetail> findNewTransactions(int providerid);

    void moveTransactionsToNew(List<Integer> ids);

    List<TransactionDetail> findTransactionsbyStatus(int statusid, int providerId);

    void updateTransactionSelfFee(int transactionId, int selfFee);

    void updateTransactaionCustomerBalance(int transactionId, int customerBalance);

    List<TransactionDetail> findByAdminCriteria(AdminTransactionCriteria criteria);

    void moveTransactionToProvider(int transactionId, int providerId);

    public void moveTransactionsToNewStatus(List<Integer> ids);
}



